home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / biz / haage / MakeVanim.lha / VAnim.rexx < prev   
OS/2 REXX Batch file  |  1997-09-15  |  6KB  |  156 lines

  1. /******************************************************************/
  2. /*                                                                */
  3. /*                VAnim.rexx V1.1 for ArtEffect 2.0               */
  4. /*                                                                */
  5. /* This rexxscript assembles a series of pictures to form a       */
  6. /* TransferAnim for Voyager or IBrowse.                           */
  7. /*                                                                */
  8. /* Written by: Eike M. Lang <elang@neuss.netsurf.de>              */
  9. /* Homepage:   http://jayhawk.home.pages.de/                      */
  10. /*                                                                */
  11. /* Usage: create a number of pictures of equal size that will be  */
  12. /* the frames of the animation.  These pictures must be numbered  */
  13. /* consistently.                                                  */
  14. /* The name format for the frames MUST be <filename>.xxxx         */
  15. /* Where xxxx can be anything between 0000 and 9999               */
  16. /* <filename> can be any AmigaDOS-legal file name.                */
  17. /* Run the script from the shell or directly from ArtEffect.      */
  18. /* You can freely choose the start- and end-frames, but naturally */
  19. /* all frames in between those should exist.                      */
  20. /* Once the animation is assembled you are given the choice of    */
  21. /* saving it immediately.                                         */
  22. /*                                                                */
  23. /* The script tries to cover all common error-situations, but if  */
  24. /* you try hard enough, you'll still be able to mess it up.       */
  25. /* So don't get fancy and try to use anim-frames of different     */
  26. /* sizes (which would also look funny in Voyager and IBrowse) and */
  27. /* don't try to use your C sources or anything like that as anim  */
  28. /* frames.                                                        */
  29. /*                                                                */
  30. /******************************************************************/
  31.  
  32. OPTIONS RESULTS
  33. OPTIONS FAILAT 21
  34. SIGNAL ON ERROR
  35.  
  36. /* Check for ArtEffect ARexx port */
  37. IF ~SHOW(P,"ArtEffect") THEN DO
  38.     SAY D2C(7)
  39.     SAY "ATTENTION:"
  40.     SAY "Could not find ArtEffect ARexx port."
  41.     SAY "Please make sure that ArtEffect is running."
  42.     SAY
  43.     EXIT
  44. END
  45.  
  46. ADDRESS "ArtEffect"
  47.  
  48.  
  49.  
  50. /* keep the user from interfering */
  51. LOCKGUI         
  52.  
  53. /* Find out path and name of the first and last picture */
  54. REQUESTFILE VAR firstfile TITLE '"Select the first picture"'
  55. picpath=Left(firstfile, LastPos('/',firstfile))
  56. REQUESTFILE VAR lastfile PATH picpath TITLE '"Select the last picture"'
  57.  
  58. /* Load the last picture to be used */
  59. LOADBRUSH lastfile
  60. IF RC~=0 THEN
  61.     CALL NOTIFY("File" lastfile "could not be found.")
  62.  
  63. /* get width/height of the frames */
  64. GET STEM brush. BRUSHINFO 
  65.  
  66. /* assign some variables we need */
  67. /* This is the base name of the variable without the number extension */
  68. stemname=Left(firstfile, Pos('.', firstfile))
  69.  
  70. /* This is the number of the first image to use */
  71. startnumber=Right(firstfile, Length(firstfile)-LastPos('.', firstfile))
  72.  
  73. /* This is the number of the last image to use */
  74. endnumber=Right(lastfile, Length(lastfile)-LastPos('.', lastfile))
  75.  
  76. /* Now calculate the total width of the animation */
  77. totalwidth=brush.width*(endnumber-startnumber+1)
  78.  
  79. /* Sanity check */
  80. IF totalwidth<1 THEN
  81.     NOTIFY("The last file must have a greater|number than the first one.")
  82.  
  83. /* Generate a new project with the right size */
  84. NEW WIDTH totalwidth HEIGHT brush.height NAME "TransferAnim"
  85.  
  86. /* Main loop */
  87. DO i=0 TO (endnumber-startnumber)
  88.  
  89.     /* calculate the current file for this cycle */
  90.     currfile=stemname || Right(i+startnumber, 4, 0)
  91.  
  92.     /* attempt to load it */
  93.     LOADBRUSH currfile
  94.  
  95.     /* Check existence of each file */
  96.     IF RC~=0 THEN
  97.         CALL NOTIFY("File" currfile "could not be found.|Please make sure all files between|" firstfile "and" lastfile "exist.")
  98.  
  99.     /* Make position caculation as easy as possible */
  100.     CHANGEBRUSH HANDLE TOPLEFT
  101.  
  102.     /* Finally put the image on the page */
  103.     PLOT i*brush.width 0 'PAINTTOOL BRUSH MODE MATTE STR 100'
  104. END
  105.  
  106. /* Give the user the chance to save his creation right away */
  107. REQUESTRESPONSE VAR choice TITLE '"User Query"' PROMPT '"Do you want to save this animation?"' OPTIONS "Yes|No|Don't Know"
  108.  
  109. /* Save-file feat. full(?) sanity-check */
  110. IF choice=0 THEN DO
  111.     REQUESTFILE VAR saveanim TITLE '"Save Animation"' FILE "TransferAnim" SAVE
  112.     IF RC~=0 THEN
  113.         CALL NOTIFY("You cancelled the saving process.")
  114.     SAVEPIC NAME saveanim PLUGIN 'IFF-ILBM'
  115.     IF RC~=0 THEN
  116.         CALL NOTIFY("File" savenanim "could not be saved.")
  117. END
  118.  
  119. /* Notify user that he can save the file at a later time */
  120. ELSE REQUESTNOTIFY TITLE "Message" OK '"I see"' PROMPT "You can still save the|animation manually."
  121.  
  122. /* return control to user */
  123. UNLOCKGUI
  124.  
  125. EXIT
  126.  
  127.  
  128. /* Error notification - saves a few lines of code */
  129. NOTIFY:
  130.     /* Get the actual error */
  131.     PARSE ARG Errorstring
  132.  
  133.     /* Notify user via the ArtEffect-provided requester */
  134.     REQUESTNOTIFY TITLE "Error" PROMPT Errorstring
  135.  
  136.     /* always make sure the GUI is unlocked after errors */
  137.     UNLOCKGUI
  138.  
  139.     EXIT
  140. RETURN
  141.  
  142.  
  143. /* Handling of errors that are not intercepted by the script itself.
  144.    The most common situation for this message to appear is that the
  145.    user did not follow the naming conventions for the frames.
  146.    This error will of course also occur when trying to load files of
  147.    the wrong format - ASCII, binaries, etc. ;-) */
  148.  
  149. ERROR:
  150.     REQUESTNOTIFY TITLE "ARexx-Error" PROMPT "ARexx-error no." RC "has occured in line" SIGL ".|Please make sure the pictures are properly named|and numbered."
  151.  
  152.     /* Never! forget to unlock the GUI when an error has occurred */
  153.     UNLOCKGUI
  154. EXIT
  155.  
  156.